const Configuration = {
    /*
     * 继承 `@commitlint/config-conventional` 的预设规则
     * 需确保已安装该依赖（通过 npm/yarn/pnpm）
     */
    extends: ['@commitlint/config-conventional'], // 引用社区通用的提交规范

    /*
     * 指定提交信息解析器,这个标准是最常用吧，开源库和中大项目都用这个，比如vue，那我也用这个
     * 需确保已安装对应依赖
     */
    parserPreset: 'conventional-changelog-angular', // 用于解析提交消息的语法规则

    /*
     * 指定输出格式化工具为 `@commitlint/format`
     * 需确保已安装该依赖
     */
    formatter: '@commitlint/format', // 控制校验结果的显示格式[10](@ref)

    /*
     * 自定义忽略条件（函数形式）
     * 此处忽略空提交消息（例如 `git commit -m ""`）
     */
    ignores: [(commit) => commit === ''], // 返回 `true` 时跳过校验[10](@ref)

    /*
     * 是否启用默认忽略规则
     * 默认忽略合并提交（Merge）、回滚提交（Revert）等[10](@ref)
     */
    defaultIgnores: true,

    /*
     * 校验失败时显示的帮助文档链接
     */
    helpUrl: 'https://github.com/conventional-changelog/commitlint/#what-is-commitlint', // 引导用户查阅文档[6](@ref)

    /*
     * 交互式提交提示的配置
     * 可自定义提示信息和问题描述
     * 我一定要给换成中文，这个是从@commitlint/config-conventional复制出来的，我把里面的英文改成中文了
     * 也可以给他删了，直接用@commitlint/config-conventional中的
     */
    prompt: {
        questions: {
            type: {
                description: '选择您要提交的更改类型',
                enum: {
                    feat: {
                        description: '新增功能（如模块、组件、接口等）',
                        title: '新功能',
                        emoji: '✨'
                    },
                    fix: {
                        description: '修复代码缺陷（如逻辑错误、边界条件问题等）',
                        title: '缺陷修复',
                        emoji: '🐛'
                    },
                    docs: {
                        description: '仅文档变更（如 README、API 文档、注释等）',
                        title: '文档',
                        emoji: '📚'
                    },
                    style: {
                        description: '代码格式调整（空格/缩进/分号等，**不改变运行逻辑**）\n⚠️ 注意：CSS 样式修改属于功能变更，请用 `feat`/`fix`',
                        title: '代码格式调整',
                        emoji: '💎'
                    },
                    refactor: {
                        description: '代码重构（既非新功能也非缺陷修复，如优化结构、重命名等）',
                        title: '代码重构',
                        emoji: '📦'
                    },
                    perf: {
                        description: '性能优化（如算法改进、缓存机制、渲染效率提升等）',
                        title: '性能优化',
                        emoji: '🚀'
                    },
                    test: {
                        description: '测试相关（新增/修改单元测试、E2E 测试等）',
                        title: '测试相关',
                        emoji: '🚨'
                    },
                    build: {
                        description: '构建系统变更（如 Webpack/Vite 配置、npm 依赖更新等）',
                        title: '构建系统变更',
                        emoji: '🛠'
                    },
                    ci: {
                        description: '持续集成配置变更（如 GitHub Actions/Jenkins/Travis 脚本等）',
                        title: '持续集成（CI）',
                        emoji: '⚙️'
                    },
                    chore: {
                        description: '其他杂项变更（如工具链调整、配置文件修改等，不涉及代码逻辑）',
                        title: '其他杂项变更',
                        emoji: '♻️'
                    },
                    revert: {
                        description: '回滚某次错误提交（需注明被回滚的 Commit Hash）',
                        title: '回滚提交',
                        emoji: '🗑'
                    }
                }
            },
            scope: {
                description: '影响范围（如模块名、组件名、文件名等，示例: `login`, `button`, `utils`）'
            },
            subject: {
                description: '简短描述变更内容（使用命令式语气，如『修复XX问题』而非『修复了XX问题』）'
            },
            body: {
                description: '详细说明变更原因与实现细节（可选，复杂变更建议填写）'
            },
            isBreaking: {
                description: '是否包含破坏性变更？（会导致其他代码不兼容的修改）'
            },
            breakingBody: {
                description: '请详细描述破坏性变更的影响及迁移方案（格式: `BREAKING CHANGE: <说明>`）'
            },
            breaking: {
                description: '破坏性变更摘要（示例: `移除旧API XX`）'
            },
            isIssueAffected: {
                description: '是否关联未关闭的 Issue？（如修复 Bug 或实现需求）'
            },
            issuesBody: {
                description: '请说明变更与 Issue 的关联性（可选）'
            },
            issues: {
                description: '关联的 Issue 编号（格式: `fix #123`, `close #456`）'
            }
        }
    }
}

export default Configuration

